﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VP.Tools;
using Ext.Net;
using crm.model;
using System.Data;

namespace crm.aplicacao.CRMSystem
{
    public partial class GAtividade : PaginaBase
    {
        protected void Check_Clicked(Object sender, EventArgs e)
        {
            if (checkNovaAtivdade.Checked)
            {
                dtRetorno.Disabled = false;
                txtDescricaoNova.Disabled = false;
                cbResponsavelNova.Disabled = false;
            }
            else
            {
                dtRetorno.Disabled = true;
                txtDescricaoNova.Disabled = true;
                cbResponsavelNova.Disabled = true;
            }


        }
        protected void Page_Load(object sender, EventArgs e)
        {
            verificarSeUsuarioEstaLogado();
            cbResponsavelNova.SelectedItem.Value = UsuarioLogado.Nome.ToString();
            if (!X.IsAjaxRequest)
            {
                carregarEmpresas();
                carregarAtividades();
                carregarUsuarios();
            }


        }

        //abrir o form de realizar de atividade
        [DirectMethod]
        public void realizar()
        {
            RowSelectionModel sm = GridAtividade.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione uma Atividade").Show();
                return;
            }

            var id = Convert.ToInt32(sm.SelectedRow.RecordID);

            var dt = new AtividadeDao().consultar(id);

            List<Atividade> lst = new List<Atividade>();

            foreach (DataRow dr in dt.Rows)
            {
                lst.Add(new Atividade()
                {
                    IdAtividade = (int)dr["idatividade"],
                    FkIdOportunidades = (int)dr["fkidoportunidades"],
                    FkIdEmpresas = (int)dr["fkidempresas"].ToInt32(),
                    Descricao = (string)dr["descricao"],
                    DataRetorno = (DateTime)dr["dataretorno"],
                    FkIdUsuarios = (int)dr["fkidusuarios"]
                });
            }

            if (lst.Count == 0)
                return;

            var obj = lst[0];

            cbEmpresaRealizado.SelectedItem.Value = obj.FkIdEmpresas.ToString();

            cbEmpresaRealizado.Disabled = true;
            checkNovaAtivdade.Checked = false;
            dtRetorno.Disabled = true;
            txtDescricaoNova.Disabled = true;
            cbResponsavelNova.Disabled = true;

            var dataAtua = DateTime.Now;

            WindowsRealizado.Show();
        }

        //Validação Inserir e ou atualizar
        [DirectMethod]
        public void verificar()
        {

            if (checkNovaAtivdade.Checked)
            {
                inserirAtividade();
                finalizarAtividade();
            }
            else
            {
                finalizarAtividade();
            }
            carregarAtividades();
            WindowsRealizado.Hide();
        }

        // Finalizar Atividade
        [DirectMethod]
        public void finalizarAtividade()
        {

            RowSelectionModel sm = GridAtividade.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione uma Atividade").Show();
                return;
            }


            var id = Convert.ToInt32(sm.SelectedRow.RecordID);

            Atividade obj = new Atividade();
            obj.IdAtividade = id;
            obj.Observacao = txtObservacao.Text;
            obj.DataContato = dtContatoRealizado.SelectedDate.Date;

            AtividadeDao objDao = new AtividadeDao();

            if (objDao.finalizarAtividade(obj))
                X.Msg.Alert("Status", "Finalizado com sucesso!").Show();
            else
                X.Msg.Alert("Status", "Não foi possível Finalizar!").Show();

        }

        //Inserir uma nova atividade
        [DirectMethod]
        public void inserirAtividade()
        {

            RowSelectionModel sm = GridAtividade.SelectionModel.Primary as RowSelectionModel;


            var id = Convert.ToInt32(sm.SelectedRow.RecordID);
            var dt = new AtividadeDao().consultar(id);

            List<Atividade> lst = new List<Atividade>();

            foreach (DataRow dr in dt.Rows)
            {
                lst.Add(new Atividade()
                {
                    IdAtividade = (int)dr["idatividade"],
                    FkIdOportunidades = (int)dr["fkidoportunidades"],
                    FkIdEmpresas = (int)dr["fkidempresas"].ToInt32(),
                    FkIdUsuarios = (int)dr["fkidusuarios"]
                });
            }

            if (lst.Count == 0)
                return;

            var obj1 = lst[0];

            Atividade obj = new Atividade();

            obj.FkIdOportunidades = obj1.FkIdOportunidades.ToInt32();
            obj.FkIdEmpresas = obj1.FkIdEmpresas.ToInt32();
            obj.Descricao = txtDescricaoNova.Text;
            obj.DataRetorno = dtRetorno.SelectedDate.Date;
            obj.FkIdUsuarios = obj1.FkIdUsuarios.ToInt32();

            AtividadeDao objDao = new AtividadeDao();

            if (objDao.inserirAtividade(obj))
                X.Msg.Alert("Status", "Inserido com sucesso!").Show();
            else
                X.Msg.Alert("Status", "Não foi possível inserir!").Show();

        }

        //Visualizar dados da atividade
        [DirectMethod]
        public void visualizarAtividade()
        {

            RowSelectionModel sm = GridAtividade.SelectionModel.Primary as RowSelectionModel;

            if (sm.SelectedRow == null)
            {
                X.Msg.Alert("Status", "Selecione um item").Show();
                return;
            }

            //Pegando o id da atividade pra recuperar o id de oportunidade
            var id = Convert.ToInt32(sm.SelectedRow.RecordID);
            var dt = new AtividadeDao().consultar(id);

            List<Atividade> lst = new List<Atividade>();

            foreach (DataRow dr in dt.Rows)
            {
                lst.Add(new Atividade()
                {
                    IdAtividade = (int)dr["idatividade"],
                    FkIdOportunidades = (int)dr["fkidoportunidades"],
                    Descricao = (string)dr["descricao"],
                    FkIdUsuarios = (int)dr["fkidusuarios"]
                });
            }
            
            if (lst.Count == 0)
                return;

            var obj = lst[0];
            //consultado os dados da oportunidade
            var idOportunidade = obj.FkIdOportunidades;
            var dt1 = new OportunidadeDao().consultar(idOportunidade);

            List<Oportunidade> lst1 = new List<Oportunidade>();

            foreach (DataRow dr in dt1.Rows)
            {
                lst1.Add(new Oportunidade()
                {
                    IdOportunidades = (int)dr["idOportunidades"],
                    FkIdEmpresas = (int)dr["fkidempresas"],
                    FkIdContatos = (int)dr["fkidcontatos"]
                });
            }

            if (lst1.Count == 0)
                return;

            var obj1 = lst1[0];

            //Consultando os dados do contato
            var idContato = obj1.FkIdContatos;
            var dt2 = new ContatosDao().consultar(idContato);

            List<Contatos> lst2 = new List<Contatos>();

            foreach (DataRow dr in dt2.Rows)
            {
                lst2.Add(new Contatos()
                {
                    IdContatos = (int)dr["idcontatos"],
                    Email = (string)dr["email"],
                    Telefone = (string)dr["telefone"]
                });
            }

            if (lst2.Count == 0)
                return;

            var obj2 = lst2[0];

            
            //carregando no form as informações

            cbEmpresaVisualizar.SelectedItem.Value = obj1.FkIdEmpresas.ToString();
            //txtContatoVisualizar.Text = obj2.Nome.ToString();
            txtDescricaoVisualizar.Text = obj.Descricao;
            txtEmail.Text = obj2.Email;
            txtTelefoneUsuarios.Text = obj2.Telefone;
            
            cbEmpresaVisualizar.Disabled = true;
            txtContatoVisualizar.Disabled = true;
            txtDescricaoVisualizar.Disabled = true;

            WindowsVisualizar.Show();

        }



        //Carregar
        void carregarAtividades()
        {
            AtividadeDao objDao = new AtividadeDao();
            var dados = objDao.consultar();
            this.strAtividade.DataSource = dados;
            this.strAtividade.DataBind();
        }
        void carregarEmpresas()
        {
            EmpresasDao objDao = new EmpresasDao();
            var dados = objDao.consultar();
            this.strEmpresas.DataSource = dados;
            this.strEmpresas.DataBind();
        }
        void carregarUsuarios()
        {
            UsuarioDao objDao = new UsuarioDao();
            var dados = objDao.consultar();
            this.strUsuario.DataSource = dados;
            this.strUsuario.DataBind();
        }
        void carregarContato()
        {
            ContatosDao objDao = new ContatosDao();
            var dados = objDao.consultar();
            this.strContato.DataSource = dados;
            this.strContato.DataBind();
        }

        //Limpar Campo
        public void limparFinalizar()
        {
            this.cbEmpresaRealizado.Text = "";
            this.txtObservacao.Text = "";
            this.dtContatoRealizado.Text = "";
            this.dtRetorno.Text = "";
            this.txtDescricaoNova.Text = "";
        }
    }
}